/**
 * @PROJECT_NAME design_patterns
 * @DESCRIPTION 代理模式：Proxy Pattern
 * <p>
 * 由于某些原因要给对象提供一个代理以控制改对象的访问，这时，访问对象不适合或者不能直接引用目标对象，代理对象作为访问对象和目标对象之间的中介。
 * java中的代理按照代理类生成的时机不同又分为静态代理与动态代理，静态代理代理类在编译期就生产，而动态代理类则在java运行时动态生产，动态代理又有JDK代理和CGLib代理两种
 * <p>
 * 代理模式分为三种角色：
 * 抽象主题(Abstract Subject)：
 * 真实主题(Real Subject)：
 * 代理类(Proxy)：
 * <p>
 * demo1：静态代理
 * <p>
 * demo2：JDK动态代理
 * <p>
 * demo：CGLib动态代理
 * <p>
 * 动态代理与静态代理相比较，最大的好处是接口中声明的所有方法都被转移到调用处理器一个集中的方法中处理（InvocationHandler.invoke），
 * 这样在接口方法数量比较多的时候，我们可以进行灵活处理，而不需要向静态代理那样每一个方法进行中转。
 * 如果接口增加一个新方法，静态代理模式处了所有实现类需要实现这个方法外，所有代理类也需要实现此方法，增加了代码维护的复杂度，而动态代理不会出现此问题。
 * <p>
 * 如果有接口使用JDK动态代理，如果没有接口使用CGLib代理。
 * <p>
 * 优缺点
 * <p>
 * 优点：
 * <p>
 * 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用
 * 代理对象可以扩展目标对象的功能
 * 代理模式能将客户端与目标对象分离，在一定程度上降低了系统的耦合度
 * <p>
 * 缺点：增加了系统的复杂度
 * @AUTHOR CNBruceLee
 * @DATE 2021/7/14 23:18
 */
package com.bruce.demo2.patterns.demo2.structural.demo06.proxy;

class PackageInfo {

}

